Riferirsi alla documentazione di Implementazione
Presentazione
La parametrizzazione dei contatori si fa su un solo folder. Oltre al codice del contatore, si definiscono anche le caratteristiche generali e la struttura dettagliata dei caratteri che partecipano alla composizione del contatore. Questa struttura si definisce in un riquadro di componenti, di cui si definisce la lunghezza.
I componenti possibili sono descritti nel riquadro che segue:
Chiudi
Campi
I seguenti campi sono presenti in questo folder :
Blocco numero 1
| Questo codice identifica un contatore che può essere utilizzato per la numerazione automatica dei documenti. Un contatore è un campo di tipo alfanumerico da 1 a 20 caratteri. E' composto da una sequenza di sotto-campi che possono essere di diversi tipi e che saranno concatenati da sinistra a destra per formare il valore del contatore. |
| Destiné à figurer sur les états et les écrans dans lesquels le code de la fiche peut être saisi ou sélectionné. Ce texte permet de donner une description de la fiche concernée. |
Livello definizione
| Il Livello di definizione può assumere i valori Dossier, Società, Sito. Permette di definire se si deve disporre di una sequenza di numerazione univoca per tutto il dossier, definita per società, o per sito. Per evitare gli omonimi, ciò presuppone che si inseriscano nel contatore i componenti appropriati, in particolare il sito e/o la società. |
Reset
| Questo livello di definizione permette di sapere se si possiede un valore di contatore univoco nel tempo, o per mese o ancora per anno, esercizio o periodo contabile. Per evitare gli omonimi, ciò presuppone che nel contatore si inseriscano i componenti adeguati, in particolare l'anno, il mese, il giorno o la settimana. La combinazione di questo parametro con il Livello di definizione e con la presenza di un componente Complemento definisce quante sequenze di numerazione saranno assegnate al contatore (questo andrà da una sequenza univoca ad una sequenza per mese, per sito e per valore di complemento). In funzione di questi due parametri, si possono introdurre dei componenti allo scopo di evitare dei problemi di omonimia. Così, per esempio, se si definisce un Livello di reset uguale all'anno, occorre che l'anno figuri nel contatore. Allo stesso modo, se si definiscono dei contatori per società, occorre che il sito o la società si trovino nella struttura del contatore. |
Tipo
| Un contatore comporta sempre delle chiavi alfanumeriche. Se il tipo qui dichiarato è però numerico, si elimineranno gli zeri all'inizio del valore restituito. Un contatore dichiarato quindi numerico di 6 cifre inizierà con il valore "1", mentre un contatore alfanumerico di 6 cifre inizierà con il valore "000001". Attenzione, se il contatore è dichiarato come numerico e dei componenti alfabetici sono stati dichiarati nella struttura del contatore, non verrà effettuato alcun controllo alla creazione, ma all'utilizzo verrà riportata soltanto la parte numerica all'inizio del contatore. |
Riquadro Componenti
| Numero della riga. |
| Ogni componente del contatore possiede un tipo descritto nella documentazione generale sui contatori. |
| Viene indicata qui la lunghezza del componente. Esistono dei limiti a seconda del tipo di componenti:
|
| Viene definito il valore di una parte costante del contatore. Può essere un qualsiasi alfanumerico (compresi caratteri speciali come "-/."). |
Blocco numero 6
| Questo campo definisce il modo in cui sono gestiti i contenziosi multi-utente in attribuzione del numero. Salvo il problema particolare collegato ad un grande numero di utenti concorrenti, si consiglia di utilizzare il tipo Normale. Si troveranno nella documentazione dei contatori maggiori spiegazioni su questo campo. |
| Quando il contatore è di tipo Sequenza, si specifica qui la tabella del database la cui sequenza è utilizzata. In principio, è la tabella principale in cui si trovano i documenti numerati. |
| Nel caso di un contatore di tipo Raggruppato, questo campo definisce la quantità di numeri attribuiti contemporaneamente. |
Diversi
| Tale flag permette di attivare o meno il controllo di cronologia per quei documenti la cui legislazione corrente impone un controllo cronologico dei numeri in relazione alla data di inserimento (è il caso di alcuni documenti in alcune legislazioni, quella italiana in particolare). Permette di evitare che un movimento logicamente datato ad una data D1 possa essere creato con un numero successivo ad un movimento logicamente datato ad una data D2 successiva a D1 (questo indipendentemente dalla data di creazione effettiva del movimento). |
| Questo campo indica la lunghezza totale dei numeri creati dal contatore. |
| Se questa casella è contrassegnata, il contatore sarà rimesso a 0 dall'utility di reset dossier, in caso contrario il suo valore sarà conservato. |
| Definito dalla tabella diversa 909, questo codice collegato alla società permette di predefinire delle regole, soprattutto contabili, e dei parametri. In particolare, i parametri generali possono essere definiti a livello della legislazione. |
Chiudi
Tipo Componente | Spiegazione |
Costante | Stringa fissa di caratteri il cui valore è inserito nella colonna Formula (tale e quale, cioè senza metterla tra apici singoli o doppi). |
Anno | Su una cifra (L'ultimo dell'anno tra 0 e 9), due cifre (tra 00 e 99), e quattro cifre |
Esercizio | Da uno a tre cifre, si definisce qui il numero di esercizio (valore uguale a 1 per il primo esercizio aperto). L’interesse di questa numerazione risiede nel caso in cui si lavori con degli esercizi non solari (in questo caso, si ha una rottura nella numerazione quando si cambia l'anno, cosa che può capitare nel mezzo dell’esercizio fiscale) |
Periodo | Da una a tre cifre, viene qui definito il numero di periodo (che comincia con 1 e che può raggiungere il numero massimo di periodi dell'esercizio). |
Mese | Su due cifre (da 00 a 12), o su tre caratteri (in questo caso, sono utilizzati i primi tre caratteri del nome inglese del mese: JAN/FEB/MAR/APR...) |
Settimana | Su 2 cifre (da 00 a 53) |
Giorno | Sia su una cifra (si tratta allora del numero del giorno della settimana, che varia da 1 a 7), sia su due cifre (è allora il giorno nell'arco del mese che varia da 01 a 31), sia su tre cifre (è allora il numero del giorno nell'arco dell'anno, che varia da 001 a 366) |
Società | Codice società al quale è attribuito il movimento (da uno a cinque caratteri) |
Sito | Codice sito al quale è attribuito il movimento (da uno a tre caratteri) |
Sequenza | Parte progressiva del contatore (si incrementerà in passi di 1 (essendo 1 il primo valore attribuito). |
Complemento | Parametro complementare il cui valore dipende dal modulo che utilizza il contatore. |
Formula | Permette di inserire nel contatore una parte interpretata da uno a venti caratteri. La formula viene inserita in seguito. Contrariamente al complemento, di cui ogni valore ha la propria cronologia, un contatore che integra una formula interpretata utilizza un contatore indipendente dal risultato della valutazione. La formula può essere di tipo alfanumerico, numerico o data, ma se contiene dei caratteri alfabetici, questi sono trasformati in maiuscolo e l'insieme viene formattato sul numero esatto di caratteri previsti. |
Il codice complemento permette di definire un segmento di contatore che dipende dal contesto, senza dover definire due contatori diversi. E' importante sapere che, in questo caso, esiste una sequenza cronologica per ogni valore diverso preso dal complemento.
L'utilizzo del codice complemento dipende dal contesto funzionale utilizzato da ogni applicazione scritta in tecnologia adonix.
Nel caso del supervisore, il codice complemento è utilizzabile per il contatore dei numeri di lotto nel transito import-export. Contiene il codice del modello di import-export utilizzato.
L'elenco dei codici complementi usati nei moduli principali di ogni applicazione è definito in una documentazione allegata.
In tutti gli altri casi, non viene assegnato il numero di complemento. D'altro canto è possibile, con un semplice sviluppo specifico, basandosi un entry point dedicato, dare un valore particolare al numero di complemento in un dato contesto.
E' possibile integrare il codice complemento in una sequenza di numerazione, senza però usare una sequenza diversa per valore di contatore. Per realizzare tutto ciò, occorre usare un componente di tipo Formula valutata, dando come formula [L]COMPLEMENT (COMPLEMENT è la variabile locale conosciuta del sotto programma di numerazione che memorizza il valore corrente del complemento).
Questo parametro può avere un'importanza quando ci si trova nel caso di installazioni clienti con un gran numero di postazioni e un'importante attività di creazione di documenti di un dato tipo. Infatti, a seconda del tipo di sequenza che si utilizza, ci può essere una contesa più o meno forte. Per contesa si intendono i conflitti transazionali collegati all'ottenimento dei numeri dei contatori. Infatti:
L'attribuzione del numero, essenzialmente durante la creazione di un documento (ordine, movimento, fattura...) si fa nella transazione di creazione stessa. Ciò significa che in caso di abbandono della transazione tramite Rollback, il numero non viene perso. In compenso, fino a quando la transazione di creazione (che può durare alcuni secondi) non è terminata, ogni transazione concorrente di creazione dello stesso tipo di documento non potrà ottenere un numero e non andrà a buon fine. Verrà effettuato allora un Rollback della transazione concorrente, seguito da un nuovo tentativo, (che questa volta andrà a buon fine se la prima transazione è terminata).
Il numero di tentativi successivi realizzati in caso di blocco di questo tipo prima dell'abbandono della transazione è parametrizzabile dal parametro ROLLBACK del capitolo SUP. In caso di contesa, è quindi possibile aumentare il valore di questo parametro, ma occorre essere coscienti che il consumo di risorse del server di dati può aumentare a scapito delle performances, ed è anche possibile giocare sul tipo di sequenza per migliorare le cose.
A fronte di tale contesa, il contatore Normale garantisce però un rispetto dell'ordine sequenziale nel tempo: due richiami successivi nel tempo ad un dato contatore daranno dei numeri crescenti, essendo uguali tutte le condizioni collegate alla struttura del contatore (società, sito, periodo, complemento). Proprio perchè non interviene nessuna perdita di numero relativa ad un blocco, si consiglia questo tipo di contatore per i documenti fiscali per i quali si esigono allo stesso tempo delle sequenze rigide e nessun salto di numerazione.
L'attribuzione di numeri si effettua per gruppo di N numeri (essendo N definito a parametro). La contesa è quindi meno importante, poichè solo una attribuzione su N provoca una contesa, in quanto le altre attribuzioni utilizzano un numero disponibile.
Contrariamente, l'assegnanzione sequenziale dei numeri non è garantita ed è possibile una perdita di numeri per i contatori che dipendono da mese o dal periodo. Infatti, si immagini per esempio che N valga 10, che i numeri da 1 a 8 siano già stati attribuiti e che si realizzino 3 creazioni simultanee. Alla prima verrà assegnato il numero 9 ; alla seconda il numero 10, e la terza non troverà nessun numero disponibile nella prima tranche di 10 numeri. Si creeranno quindi i numeri da 11 a 20 e si attribuirà sia il primo numero tra di loro, sia l'11. Se nel frattempo la prima transazione è fallita per altri motivi, il numero 9 diventerà utilizzabile da una nuova transazione. Se non viene lanciata più nessuna transazione, ci si ritrova nella situazione in cui tutti i numeri da 1 a 11, eccetto il 9, sono utilizzati ed i successivi numeri da attribuire saranno (nell'ordine) il 9, il 12 e gli altri a seguire. Quindi non c'è rispetto rigido del numero di sequenza: se in giornata non sussiste nessuna creazione di documento e se un documento viene creato il giorno seguente, si avrà un documento con data del giorno G numerato 11 e un documento con data del giorno G + 1 numerato 9. Infine, se i contatori integrano il numero del mese e se questa situazione arriva alla fine del mese, ci sarà un buco nella numerazione (ma sarà possibile tracciarla, perchè questo numero si trova nell'elenco dei numeri da attribuire).
L’attribuzione del numero si fa fuori transazione, il che significa che non vi è alcun conflitto, ma non è possibile ritornare indietro (se il numero non è utilizzato, è definitivamente perso). Questo tipo di contatore si basa su una sequenza del database. Per ogni tabella del database, ADONIX crea una sequenza che gli è associata normalmente per ottenere un numero tecnico. E' importante notare che questa numerazione non arriva mai a 0 (quindi occorre prevedere un numero alto di cifre associato alla sequenza di numerazione nel contatore), che è strettamente sequenziale (l'ordine dei numeri attribuito è sempre crescente nel tempo), ma ci saranno dei buchi senza la possibilità di giustificarli o di recuperarli. Questa caratteristica li farà utilizzare dal momento in cui si ha bisogno di un solo numero tecnico, per il quale non è necessario nessun giustificativo dei buchi nella sequenza.
Per concludere, il riquadro qui in basso riepiloga i vantaggi e gli svantaggi dei vari tipi di contatore:
TIPO DI CONTATORE | SEQUENZA CRESCENTE | PERDITA DI NUMERI | CONFLITTO MULTI-UTENTI |
Normale | Sempre | Mai | Forte |
Raggruppato | Non sempre | A fine periodo, ma giustificabile | Media (tanto più bassa |
Sequenza | Sempre | Sì, senza giustificazione | Nulla |
I seguenti campi sono presenti sulla finestra aperta da questo bottone : Blocco numero 1
Blocco numero 2
Chiudi Questo bottone permette di copiare la definizione della scheda da o verso un altro dossier. |
Oltre ai messaggi generici, i seguenti messaggi d'errore possono apparire al momento dell'inserimento :
Si è tentato di definire un contatore che ha due componenti di tipo Numero di sequenza (è autorizzato un solo numero di sequenza per contatore)
La lunghezza richiesta non è compatibile con il parametro (per esempio, un anno su 8 cifre o un mese su 5 caratteri)
La lunghezza totale del contatore eccede i 20 caratteri o la somma delle lunghezze dei componenti è diversa dalla lunghezza totale.
La formula di calcolo che è stata inserita non ha una sintassi corretta.
Un contatore basato su una sequenza potrà essere basato solo su una tabella presente nel dossier corrente. Non è il caso di questo tipo di tabella.
Un contatore basato su una sequenza di database può permettere una sola sequenza di numerazione (quindi a livello dossier) e non può essere azzerata.